package com.aaa.dang.modules.system.service;

import com.aaa.dang.common.entity.Role;
import com.aaa.dang.common.util.ResultModel;

import java.util.Map;
import java.util.Set;

/**
 * 角色表业务接口
 *
 * @author Dadazhao
 * @date 2018/12/17
 */
public interface IRoleService {
    /**
     * 获得所有状态为正常（0）的角色
     *
     * @return 角色列表
     */
    ResultModel getRoleAll(Map<String, Object> query);

    /**
     * 修改角色账号状态
     *
     * @param id     角色id
     * @param status 角色状态 0 启用 1 禁用
     * @return code 0 成功 1失败
     */
    ResultModel updateRoleStatus(Integer id, Integer status);

    /**
     * 删除角色
     *
     * @param id 角色id
     * @return code 0 成功 1失败
     */
    ResultModel deleteRoleById(Integer id);

    /**
     * 添加角色
     *
     * @param role 角色实体
     * @param ids  权限id 数组
     * @return code 0 成功 1失败
     */
    ResultModel addRole(Role role, Integer[] ids);

    /**
     * 修改角色的权限
     *
     * @param role 角色实体
     * @param ids  权限id 数组
     * @return code 0 成功 1失败
     */
    ResultModel updateRoleById(Role role, Integer[] ids);

    /**
     * 校验角色名是否存在
     *
     * @param role 角色实体
     * @return code 0 存在 1 不存在
     */
    ResultModel isExistRoleName(Role role);

    /**
     * 获得员工拥有的角色
     *
     * @param userName 登录账号
     * @return 拥有的角色集合
     */
    Set<String> getRolesByEmpLoginName(String userName);
}
